﻿package zf
{
	/**
	 * 数字工具类，提供数字处理的一些方法 
	 * @author Mike.zhang
	 * @langversion 3.0 
	 * @playerversion Flash 9 
	 */
	public class Fig
	{
		/**
		 * @private 
		 * 
		 */
		public function Fig ()
		{
			throw new ArgumentError("无法实例化 Fig 类",2012);
		}
		/**
		 * 四舍五入截取双精度数字的小数位数 
		 * @param v 要截取的双精度数字
		 * @param bit 保留位数
		 * @return 数字
		 * 
		 */
		public static function toDecimal (v:Number,bit:uint=2):Number
		{
			var n:uint=Math.pow(10,bit);
			var num:int=Math.round(v * n);
			return num / n;
		}
		
		/**
		 * 返回一个随机 Boolean 值
		 * @return true或false
		 * 
		 */
		public static function randomBoolean():Boolean
		{
			return Math.random()>0.5?true:false;
		}
		
		/**
		 * 返回1或-1 
		 * @return 1或-1
		 * 
		 */
		public static function randomOne():int
		{
			return Math.random()>0.5?1:-1;
		}
		
		/**
		 * 返回一个min到max之间的随机数 
		 * @param max 随机最大值
		 * @param min 随机最小值
		 * @return 数字Number
		 * 
		 */
		public static function randomNumber(max:Number,min:Number=0):Number
		{
			var v:Number=max-min;
			return Math.random()*v+min;
		}		
		/**
		 * 返回一个范围在v之内的数，它有可能是负数。例如返回5之内的数，可能会有-5，-3，4，5 
		 * @param v 范围，-v到v之间，也可以是负数
		 * @return 数字Number
		 * 
		 */
		public static function randomBound(v:Number=1):Number
		{
			return randomOne()*Math.random()*v;	
		}
		
		/**
		 * 返回一个0-1之间的数，同Math.random(); 
		 * @return 数字Number
		 *  
		 */
		public static function random():Number
		{
			return Math.random();
		}
	}
}